Linux Elenco Comandi Utili
Elaborazioni a terminale
In linux l'utilizzo del terminale può far comodo in molte situazioni anche nei sistemi desktop e non solo quando si utilizzano servers di seguito un elenco di utili comandi con i links a molti dei posts di approfondimento presenti nel blog.
Un comandi semplice: visualizzare il contenuto di una cartella e passare nell cartella home
:~$ ls maurizio remastersys backup :~$ cd ~
Un comando un po' più complesso: linearizzare un lista in questo caso degli x windows manager ( desktop manager ) installati in sistema linux
:~$ update-alternatives --list x-window-manager | cut -d "/" -f 4 | tr '\n' ', '| sed 's/\,$/\n/g'
Premessa
Per scrivere nella shell del terminale i comandi su più righe utilizzare "\" attenzione che non siano caratteri <space> dopo la \ perchè in tal caso esegue comunque il comando.
Ridirezionare l'output : Pipe | redirect > append >>
Con il piping | si invia l'output di un comando sull'input di un altro comando ( concatenazione di comandi )
ls | more #Visualizzare i files di una directory una pagina alla volta ls | sort | tee stdout.txt # Visualizza directory corrente( ls )| la ordina ( sort) e la salva ( tee ) nel file stdout.txt ls -la > stdout.txt # Redireziona (redirect) l'output su file df -a >> stdout.txt # Aggiungere (append) l'output del comando a un file esistente df -a | tee srdout # Visualizzare l'output a video e rediregere con tee
Per eseguire su una stessa riga più comandi/programmi separarli con ";" per eseguire un programma solo se il precedente ha avuto successo separare i pogrammi con "&&"
Ricercare i comandi nella shell
history history | grep mount
per utleriori dettagli fare Come ricercare i comandi nella shell: history
Controllare kernel e versione in uso
fare riferiemtno al post Linux Version
comunque uname -a consente di visualizzare le informazioni principali kernel versione a 32 o 64 bit sistema operativo ..
uname -a
Monitoraggio
Controllare e monitorare il sistema: cpu, memoria,schede di rete, ... con
nmon top
Un aiuto per i comandi
Per ottenere informazioni sui comandi oltre all' opzione help sono disponibili i comandi: whatis , man, info ( il più completo ) .
Linux differenze tra whatis, man, info e l'opzione -help
Per altre informazioni Documentazione in una distribuzione linux
Controllare i task
ps -ef # mostrare tutti i processi in esecuzione ps afx # mostrare tutti i processi struttura ad albero ps ax | grep '[r]desktop' # ricercare uno specifico processo in esecuzione pgrep -l '.+' # l'elenco dei processi con le regular expression
forma pratica
ps fax | grep [s]sh # ricercare uno specifico processo in esecuzione
cambiare la priorità di un processo
renice +4 `pgrep panel` 26360 (process ID) old priority 0, new priority 4
Informazioni su tutti i processi xterm
:~$ ps -fp $(pgrep -d, -x xterm) UID PID PPID C STIME TTY TIME CMD maurizio 27244 1 0 20:05 ? 00:00:00 xterm
visualizzare i processi che usano un device
sudo lsof /mnt/source
Mostrare i processi che usano più Processore, Memoria o Tempo (premendo P, M, T):
top # visualizzatore di processi htop # un top interattivo si controlla col mouse ( taskmager da temrinale )
Terminare un processo
kill 53467 # manda un segnale di terminazione al processo con ID specificato kill -9 # chiedi al kernel di uccidere un processo kill -9 -1 # uccidi tutti i processi (quelli dell'utente) complichiamoci un po' la vita fermiamo i processi/programmi vlc kill -9 `ps ax|grep '[v]lc' | awk '{print $1}'`
Uccidi una applicazione graficamente:
xkill (click sulla finestra del programma)
Visualizzare e cambiare Linux $PATH variable
Connessioni attive
sudo netstat -anpl | grep ssh # controllare connessioni attive
Connessioni Remote
post dedicati:
- Errore REMOTE HOST IDENTIFICATION HAS CHANGED Soluzione
- installare ssh server in ubuntu debian linux
- sshfs ssh Filesystem in Ubuntu
Aprire connessione ssh
ssh -X utente@192.168.2.101
quindi ovviamente inserire password utente
ssh offre due servizi di trasferimento file scp e sftp. Il protocollo sftp consente non solo il trasferimento dei dati ma anche funzionalità di manipolazione dei file è simile a ftp. Diversi file managers, nautilis pcmanfm.. supportano il protocollo sftp consentendo ottime funzionalità di manipolazione file da remoto.
Copiare files tra computer diversi
scp -r dir utente@server:/dir/destinazione
usare "\" per continuare il comando in altra riga
scp -r dir \ utente@server:/dir-destinazione
Elencare, cercare, gestire files e directories
i comandi in modo più articolato
- Comandi Linux : elencare, gestire files e directories
- Calcolare la dimensione e svuotare il cestino da terminale in ubuntu/linux
- Determinare la dimensione delle directory in linux
- Linux split file
- Automatically create a file in Linux
- Check trash size and empty trash using terminal in ubuntu
- Rinomina multipla di files
- Ricerca e sostituzione testo in file
Elencare i files
Visualizzare l'elenco dei files dettagliato con piping , redirect, append
ls -l *eth*.? # elenca i files con la substring eth e terminanti con un carattere ls -ltra # elenca in dettaglio, data creazione decresente e files nascosti (a)
Occupazione di spazio
Determinare le dimensione di un file o di una cartella su disco.
du -hs * | sort -h -r # visualizzare le directory ordinate per dimensione du -h -xc /home
Controllare l'occupazione di spazio su disco è possibile utilizzare il comando
df -a #
Gestire files e directory
md dir # o mkdir dir (md esteso mkdir ) crea una directory
md -p dir1/dir2 # crea directory nidificate
cd ~maurizio # vai nella directory home dell'utente maurizio
cd newdir # postarsi nella directory newdir
pwd # mostra l'attuale directory di lavoro
.
cp source_file dest_file # copia un file in un'altro file cp -r source_dir dest_dir # copia le directory ricorsivamente cp -R source/* target mv source_file dest_file # rinomina un file, un link o una directory: rm file1 file2 # cancella un file o un link rmdir dir # cancella directory vuote rm -rf dir # cancella directory non vuote
Rinomina multipla di files
remame -v -n 's/.MIDI$/\.mid/' *.MIDI
rename -f 'y/a-z/A-Z/' *.wav
Modificare la data di un file
touch -d '2010-03-14' Dati.zip
Modificare la data di più files contemporaneamente
find /images/ -exec touch -d '2010-03-14' *.jpg {} \;
creare hard link e soft link
ln -s linked_file link_sl # crea un link simbolico ln linked_file link_hl # crea un hard link
Rsync
Copiare directory ricorsivamente con rsync
rsync -a source_dir/ target_dir/
I diritti di accesso ai file
chmod u+w file # aggiungi il permesso di scrittura per l'utente corrente
chown -R newuser:newgroup dir # cambiare user e gruppo di una directory
.
chmod -R a+rX dir # rendi la directory accessibile a tutti ricorsivamente
chmod o+x file # aggiungi il permesso di esecuzione per gli (others) altri utenti
chmod a+rX * # rendi il file eseguibile da tutti
.
Mostrare gestire il contenuto dei file
cat file1 file2 # Concatena e mostra il contenuto dei file: more file1 file2 # Mostra il contenuto di più file (fermandosi ad ogni pagina): less file1 file2 # simile a more (migliore: con più opzioni) head -10 file # mostra le prime 10 linee di un file tail -10 file # mostra le ultime 10 linee di un file:
.
Mostra solo le linee di un file contenenti una data sottostringa:
grep sottostringa file grep -i sottostringa file # cerca ignorando il maiuscolo/minuscolo: grep -v sottostringa file # Mostra tutte le linee escluse quelle contenenti la data sottostringa: grep -r sottostring dir # Cerca in tutti i file di una directory:
Ordina le linee in un file dato:
sort file sort -u file (uniche) # ordina le linee, mostrando quelle duplicate una sola volta:
Ricerca sostituzione testo
sed il comando per la ricerca e la sostituzione di testo in un file
sed -i 's/testo da sostituire/nuovo testo/g' file.txt
sed -i -e 's@database_name_here@wordpress@' wp-config.php
Cercare con locate e find
locate
Ricerca veloce di files nel sistema.
Attenzione: la ricerca è indicizzata. Senza aggiornare il database di locate non trova i files nuovi
locate stringa locate postgresql* sudo updatedb # per aggiornare il database di locate
find
Trova tutti i file nella directory attuale (.) e nelle sue sottodirectory con log nel nome:
find . -name "*log*" find / -iname "mysql" # Cercare un una riccorenza testauale ignorando maiuscuole in tutto il filesystem sudo find / -size +100M # cercare file per dimensioni in tutto il file sistem sudo find / -regex '.+\.cfg' | grep 'WA' # usare le regular expression e grep
Trova tutti i file .pdf in dir e nelle sotto- directory ed esegui un comando su ciascuno:
find . -name "*.pdf" -exec xpdf {} ';'
cercare file maggiori di 100MB e visualizzare i dettagli con ls nella directory corrente
find ./ -size +100M -exec ls -l {} \;
cercare con find i file maggiori di 50MB e visualizzamdo i file in forma essenziale con -exec ls e awk
sudo find / -type f -size +50M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
sempre con find -exec e il comando file determinare il tipo di file
find /home/maurizio/Pictures -type f -exec file '{}' \;
find ./ -iname "*.*" -mtime -10 -type f # ricerca i files che sono stati modificati negli utlimi 10 giorni
rinomina multipla di files in subdirectories
find . -depth -iname "*.wav" -execdir rename 's/^(\.\/[^.]*)\.(.*)$/\U$1\E.$2/' {} \;
Cercare file duplicati
- findup ( comando di FSLint ) - fdupes - rdfind
________
Gestire gli user da terminale
post dedicati:
- Gestire gli users in Linux da terminale
- Ubuntu 14.xx password dimenticata
- Comandi Linux per gestire gli utenti
- Linux su (switch user) e sudo (super user do)
Modifica la password di un'utente
passwd [nomeutente]
Diventare root e/o user
su # (su: switch user) su - # cambia anche percorso
diventare root in Ubuntu anche in assenza di uno user <root> impostato tradizionalmente
sudo -s # (sudo: super user do) sudo su - gksudo nautilus ( avviare applicazione grafica con i permessi di root )
cambiare utente
su maurizio # non cambia percorso ) su - maurizio # si posiziona nella home dello user )
Controllare servizi
sysv-rc-conf (debian / ubuntu )
apt-get install sysv-rc-conf
oppure
chkconfig --list
(centos /redhad)
Impostare l'avvio automatico e il runlevel
chkconfig --level 35 postgresql on
Cambiare data
Aggiornare data e ora su internet
ntpdate <server>
cambiare data manualmente
date MMDDhhmmYYYY.ss
MM:mese DD:giorno hh:ora mm:minuti YYYY:anno ss:secondi
Linux visualizzare un file log in tempo reale - log file real time view
tail -f file-name.log command tail -f /var/log/apache2/access.log
Eseguire comandi in background
nohup Command [Arg] &
nohup ping eurotech.com &
Archiviare in linux con tar, bz2,gz e zip
post specifico: Comandi Linux per archiviare tar, bz2, gz e zip
estrarre file tar.gz
tar zxvf sopcast-player-0.8.5.tar.gz
estrarre file .gz
gzip -d eth_group.gz
comprimere in un file .tar.bz2 ( formato preferibile in linux )
tar jcvf archive.tar.bz2 dir/
Fermare il computer
Riavviare il computer
reboot or shutdown -h now or restart
Fermare il computer tra un ora
shutdown -h +60
Spegnere il compiutere alle 12:00
shutdown -h 12:00
Keyboard - Tastiera
Cambiare il layout della tastiera
sudo dpkg-reconfigure keyboard-configuration
cambiare il layout della tastiera da terminale
setxkbmap it
-------
per ascoltare musica senza consumare risorse
utilizzare un file manager associato al programma da riga di commando:
mpg123
GNU/Linux Advanced Administration direct link.
.
Informazioni sul hardware
post dedicati:
cat /proc/cpuinfo # Controllare i dettagli del processore via terminale
Per ottenere informazioni sul hardware del sistema si possono usare i segg command can be used:
dmidecode
dmidecode legge le informazioni dal BIOS http://www.nongnu.org/dmidecode/.
Altri comandi utili per verificare i componenti harware installati sono:
dmesg lsdev lshal lspci lsusb lsscsi lspci ( usr/bis/lspci) # visualizzare schede PCI cat /proc/pci |grep 5263 # per determinare se esiste ULi M5263 Ethernet controller lshw # Elencare le risorse hardware
Oppure installare hardinfo un utile tools per controllare il sistema
ed eseguire benchmarks
sudo apt-get install hardinfo
-------
Determinale UUID
per conoscere l'UUID di tutte le partizioni
sudo /sbin/blkid ( prefribile )
o
ls -lah /dev/disk/by-uuid
di una specifica partizione:
vol_id -u /dev/hdc2
.
Server X
post dedicati:
Avvio server X
startx
per avviare una nuova sessione grafica selezionare un nuova
console terminale CRTL-ALT F3
startx -- :1
Eseguire applicazione X su client linux remoto
Visualizzare su computer linux che funzionerà da client un applicazione X che viene eseguita su computer linux remoto.
aprire una connessione ssh:
ssh -X utente@computerserver
quindi ditare il nome dell'applicazione
es: firefox - krusader - gimp
per avviare il windows manager completo digitare
exec gnome-session
perchè il client visualizzi correttamente gli applicativi X
in /etc/ssh/sshd_config ci devono essere le seguenti impostazioni:
X11Forwarding yes
X11DisplayOffset 10
e la variabile DISPLAY deve essere localhost:10.0
per controllare:
cat /etc/ssh/sshd_config |grep X11Forwarding X11Forwarding yes cat /etc/ssh/sshd_config |grep X11Display X11DisplayOffset 10 echo $DISPLAY localhost:10.0
___________________
se appare il messsggio
X11 connection rejected because of wrong authentication.
controllare i permessi di .Xauthority
ls -l .Xauthority Devi esserci sono tu come proprietario. sudo chown tralce .Xauthority sudo chgrp tralce .Xauthority
valutare anche la romozione .Xauthority se appare il messsggio
X11 connection rejected because of wrong authentication.
rm -f .Xauthority
Riavviare sshd
sudo /etc/init.d/sshd restart
.
Mount
post dedicati:
- Mount
- fstab : file system table - mtab : mounted file system table
- umount: device is busy. remote filesystem
visualizzare i file systems
fsarchiver probe
mount di partizioni in fstab senza riavviare
mount -a
mount di singolo filesystem o partizione in fstab
mount /media/VM ## cioè ( punto di mount )
o
mount /dev/sda14 ## cioè ( filesystem )
per smontare un filesystem
umount /media/VM
per forzare umount in caso di messaggio "device is busy"
umount -l /media/VM
il filesystem può essere indicato sia con UUID che con /dev/sdaX
Montaggio immagine ISO
mount -o loop -t iso9660 FC-1.C-2.iso /mnt/iso
Montaggio smb
mount -t cifs -o username=mausia //192.168.77.7/biblioteca mnt/www
o
mount -t smbfs -o username=mausia //192.168.77.7/biblioteca mnt/www
verrà richiesta password
Montaggio smb con inserimento della password
mount -t cifs -o username=eurotech,password='eurotech' //192.168.77.7/ext4 /mnt/amd2000asus/ext4
smb Centos 5.0
mount -o username=mausia //10.0.1.3/www /mnt/www
quindi verrà richiesta la password
successivamente è possibile creare un link simbolico del tipo
ln -s /mnt/<mounted-dir> /dir/simbolica
Grub
Partizionare
post specifico:
fdisk /dev/sda
cfdisk
gparted
formattare
mkfs.ext3 /dev/sda7
mkfs -t ext3 /dev/sda7
mkfs.ext3 -m 1/dev/hdb1
creates a file system with only 1% of its space reserved for the root user.
tune2fs -mcan be used to adjust the reserved blocks after data is loaded on the partition.
Per controllare se ci sono errori nel filesystem
fsck /dev/sda5
gui per lvm
system-config-lvm
Recovery Software
TestDisk
.
Networking
post dedicati.
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.67
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
---
ifdown eth0
ifdown eth1
ifup eth1
riavvia servizi di networking
sudo /etc/init.d/networking restart
Google Public DNS IP addresses: 8.8.8.8 8.8.4.4
mtr google.com
Hostname e Domini
hostname - mostra o imposta il nome del host
domainname mostra o imposta system's NIS/YP domain name
dnsdomainname mostra il system's DNS domain name
nisdomainname -mostra o imposta il system's NIS/YP domain name
ypdomainname - show o set the system's NIS/YP domain name
Windows manager
Avviare gnome
exec gnome or exec gnome-session
Ubuntu
upgrade di versione
Digitare la combinazione Alt+F2 e scrivere update-manager -d
Controllare la versione con
java-version
Installazione applicativi e files
post dedicati:
controllare e risolvere eventuali errori o dipendenze rotte con:
sudo apt-get check sudo apt-get -f install
Errore nell'installazione di applicazione in Linux Ubuntu
Reading package lists... Error! E: Encountered a section with no Package: header E: Problem with MergeList /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_natty-security_restricted_binary-i386_Packages E: The package lists or status file could not be parsed or opened.
Problema risolto usando :
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
sudo apt-cache search mysql
Installare a .deb file
sudo dpkg -i package_file.deb
Rimuovere .deb file
sudo dpkg -r package_name
cercare pacchetto installato
dpkg -l libgtk[0-9]* | grep ^i
per cercare un pacchetto installato in ubuntu debian si può utilizzare anche
aptitude search lshw se si vuole limitare la ricerca ai soli installati aptitude search '~i mysql'
.
Compilazione
post dedicati:
I comandi da utilizzare per la compilazione in condizioni standard: nella directory specifica ./configure' ## per configurare il pacchetto per il proprio sistema o sh ./configure make ## per compilare il pacchetto . make install ## per installare i programmi make clean ## per rimuovere i binari del programma e files degli oggetti dlla directory sorgente
QEMU
per testare una ISO kvm -cdrom slax-6.1.2.iso -m 512
Screenshot con scrot e gpicview
base scrot -d 2 screenshot.jpg ottimale scrot -d 2 -q 95 -t 30 screenshot.jpeg -b -s && gpicview screenshot.jpeg -d delay ( attesa 2 sec ) -q qualita default 75% -b WM border -t 30 thumbnails per selezionare un area scrot -d 2 screenshot.jpg -s
Catturare schermate a tempo prefissato
for i in {1..10}; do scrot nomefile-$i.png; sleep 5; done o while true ; do scrot nomefile_`date +%s`.png; sleep 5; done
un tools che integra scrot è Linux Deepin
CentOS 5
update
yum update
elenco gruppi ed elenco utenti
getent passwd
getent groups
cat /etc passwd
cat /etc groups
Caratteri speciali
cat * # concatena tutti i file "normali"
cat .* # concatena tutti i file "nascosti"
cat *.log #concatena tutti i file che terminano con .log:
ls *.? elenca tutti i file "regolari" che terminano con . ed un singolo carattere
Risorse: